package com.demo2;

import java.io.File;
import java.util.Timer;
import java.util.TimerTask;

// ========== 6. 主程序启动验证 ==========
class MainApplication {
    private static final String LICENSE_FILE = "license.lic";
    
    public static void main(String[] args) {
        System.out.println("=== 应用程序启动 ===");
        
        // 程序启动前强制验证License
        if (!performStartupLicenseCheck()) {
            System.err.println("\n❌ License验证失败，程序无法启动！");
            System.err.println("请联系软件供应商获取有效的License文件。");
            System.exit(1);
        }
        
        System.out.println("\n✅ License验证通过，程序正常启动...");
        
        // 启动主程序逻辑
        runMainApplication();
    }
    
    private static boolean performStartupLicenseCheck() {
        try {
            // 检查license文件是否存在
            File licenseFile = new File(LICENSE_FILE);
            if (!licenseFile.exists()) {
                System.err.println("未找到License文件: " + LICENSE_FILE);
                return false;
            }
            
            // 验证license
            return LicenseValidator.validateLicense(LICENSE_FILE);
            
        } catch (Exception e) {
            System.err.println("License验证过程中发生错误: " + e.getMessage());
            return false;
        }
    }
    
    private static void runMainApplication() {
        System.out.println("主程序运行中...");
        
        // 启动定期license检查（可选）
        startPeriodicLicenseCheck();
        
        // 这里放置您的实际业务逻辑
        // ...
        
        // 模拟程序运行
        try {
            Thread.sleep(10000); // 运行10秒后结束
            System.out.println("程序正常结束");
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }
    
    private static void startPeriodicLicenseCheck() {
        Timer timer = new Timer(true); // daemon线程
        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                if (!LicenseValidator.validateLicense(LICENSE_FILE)) {
                    System.err.println("⚠️  定期License检查失败，程序将退出！");
                    System.exit(1);
                } else {
                    System.out.println("✅ 定期License检查通过");
                }
            }
        }, 60000, 300000); // 1分钟后开始，每5分钟检查一次
    }
}
